package x.x.designpattern.observer;

import java.util.Observable;

public class Food extends Observable {
    /** 菜名 **/
    private String name;
    /** 菜价 **/
    private float price;
    
    public Food(String name,float price){
        this.name = name;
        this.price = price;
    }
    
    public String getName() {
        return name;
    }
    
    public float getPrice() {
        return price;
    }
    
    public void setPrice(float price){
        this.price = price;
        /**
         * 设置菜价的状态已经被改变
         */
        this.setChanged();
        /**
         * 通知[所有]正在看菜(已经注册了)的顾客,然后回调Observable的update的方法更新
         * 
         * 这里可以体现对象的一对多:一个商贩一旦更新价格(即一个对象的状态改变),便自动通知所有的顾客
         *     (依赖它的对象都会收到通知)
         * 并自动update
         * 
         */
        this.notifyObservers(price);
        
        /**
         * 尝试通知后2s中改变数据
         */
//        Food food = this;
//        System.out.println(System.currentTimeMillis()+"ms");
//        new Thread(){
//            public void run(){
//                try {
//                    sleep(2000);
//                } catch (InterruptedException e) {
//                    // TODO Auto-generated catch block
//                    e.printStackTrace();
//                }
//                System.out.println(System.currentTimeMillis()+"ms");
//                food.notifyObservers(price);
//            }
//            
//        }.start();
        
        
        /**
         * 尝试改变菜价之后2s才通知顾客
         */
    }
    
}
